/*
 * @(#)Tagging.java 0.0.1-SNAPSHOT
 * Copyright Group B
 */


package grupb.upf.XMLObjects;

import java.util.List;

/**
 * <p>The interface to manage personal and predefined tags of a new.</p>
 *
 * @version    0.0.1-SNAPSHOT
 * @author     Group B
 */
public interface Tagging {
   /**
    * This method allows us to the predefined tag list.
    * @param predefinedTags the predefined tags
    */
    void setPredefinedTags(List predefinedTags);
    /**
     * This method allow us to set a predefined tag.
     * @param predefinedTag the predefined tag
     */
    void addPredefinedTag(Tag predefinedTag);
    /**
     * This method allow us to remove a predefined tag.
     * @param predefinedTag the predefined tag
     */
    void removePredefinedTag(Tag predefinedTag);
    /**
     * This metho return the list of prefined tags.
     * @return the list of predefined tags
     */
    List getPredefinedTags();
    /**
     * This method allows us to clear the list of predefined tags.
     */
    void clearPredefinedTags();
    /**
     * This method allow us to set the personal tags.
     * @param personalTags the personal tags
     */
    void setPersonalTags(List personalTags);
    /**
     * This method allow us to add a personal tag.
     * @param personalTag the personal tag
     */
    void addPersonalTag(Tag personalTag);
    /**
     * This method allow us to remove a personal tag.
     * @param personalTag the personal tag
     */
    void removePersonalTag(Tag personalTag);
    /**
     * This method allow us to get the list of personal tags.
     * @return the personal tag list
     */
    List getPersonalTags();
    /**
     * This method returns us the tags as an String.
     * @return the tags as an String
     */
    String getTagsAsString();
    /**
     * This methos allows us to clear the personal tag list.
     */
    void clearPersonalTags();
}
